草庐IT

python GUI 与 Swing 相比?

全部标签

c# - 与 Dictionary 相比,SortedDictionary 的性能出乎意料地差

我不明白为什么SortedDictionary的性能在设置和检索值方面比Dictionary慢大约5倍。我预计插入和删除会更慢,但不会更新或检索。我已经测试了.Net3.5和.Net4.0版本的编译代码。预先计算了一组随secret钥,以确保随机变化不会导致随机访问的差异。以下是经过测试的场景。使用[key]访问器顺序更新每个值使用[key]访问器顺序访问每个值使用TryGetValue顺序访问每个值使用[key]访问器随机访问每个值使用TryGetValue随机访问每个值有人知道性能差异的原因吗?如果我做错了什么或愚蠢的事情请指出。示例代码:只需将Dictionary切换为Sorte

C# 事件处理(与 Java 相比)

我目前很难理解和使用委托(delegate)在C#中实现事件。我习惯了Java的做事方式:为监听器类型定义一个接口(interface),该接口(interface)将包含许多方法定义如果我对监听器中定义的所有事件不感兴趣,则为该接口(interface)定义适配器类可以使事情变得更容易在引发事件的类中定义Add、Remove和Get[]方法定义protectedfire方法来完成循环遍历添加的监听器列表并调用正确方法的脏活我理解(并且喜欢!)-我知道我可以在c#中完全相同地执行此操作,但似乎有一个新的(更好的?)系统适用于c#。在阅读了无数解释c#中委托(delegate)和事件使用

c# - 与 C# 中的显式类型相比,使用 var 有什么优势?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicates:What’sthepointofthevarkeyword?UseofvarkeywordinC#我了解如何IEnumerable对于数据类型可能会使代码的可读性降低一点,或者嵌套的泛型看起来有点令人生畏。但是除了代码可读性之外,使用var而不是显式类型还有什么优势吗?似乎通过使用显式类型,您最好传达变量的功能,因为您知道它是什么。如果它是一种工作场所编码标准,我会为了团队合作而使用它。然而,在我自己的项目中,我更愿意避免使用var。

c# - Lazy<T> 与标准惰性实例化相比有哪些优势?

考虑这个例子,它展示了延迟初始化的两种可能方式。除了线程安全之外,在此处使用Lazy是否有任何特定优势?classCustomer{privatedecimal?_balance2;privatestaticdecimalGetBalanceOverNetwork(){//lengthynetworkoperationsThread.Sleep(2000);return99.9M;}publicdecimal?GetBalance2Lazily(){return_balance2??(_balance2=GetBalanceOverNetwork());}privatereadonly

c# - Linux 上的 Mono 与 Windows 上的 .NET 相比有多可靠?

我正试图决定将Mono与C#或Python(Django)一起用于基于Linux的网站。我对C#的担忧是Mono可能不如.NET可靠。有没有人有这方面的经验? 最佳答案 我在Linux上使用mono/c#做了很多事情——所有项目都在Windows机器上编译,不少。我做过服务、网站、控制台应用程序,应有尽有。除非你在做真正的边缘案例,否则你应该没有问题。我也使用lighttpd+fastcgi+mono运行站点,没有问题。我喜欢它 关于c#-Linux上的Mono与Windows上的.NE

大型项目的 C# 编译时间(与 C++ 相比)

经常听到有人称赞C#的编译速度。到目前为止,我只做了几个小应用程序,我确实注意到编译速度非常快。但是,我想知道这是否仍然适用于大型应用程序。大型C#项目的编译速度是否比类似大小的C++项目快? 最佳答案 是的,C#通常编译得更快。虽然并不总是足够快。我最大的C#代码库可能有100万行代码和很多项目,编译花了大约一个小时。但我怀疑大部分时间是由于VisualStudio糟糕的构建系统造成的。另一方面,C++的编译时间通常要长得多,但也更依赖于您组织代码的方式。头文件依赖性处理不当很容易使编译时间增加几个数量级。

c# - 执行存储过程时,使用 CommandType.StoredProcedure 与使用 CommandType.Text 相比有什么好处?

所以在C#中使用存储过程我有如下代码(省略连接代码):stringsql="GetClientDefaults";SqlCommandcmd=newSqlCommand(sql);cmd.CommandType=CommandType.StoredProcedure;//其中sql是存储过程的名称。现在,无论有没有注释行,这段代码似乎都能正常工作。那么,我需要这条线吗?设置这个是否有一些性能(或其他)好处?不设置它或将其设置为文本有好处吗? 最佳答案 根据thisblogpost中的测试当您使用CommandType.Text时,S

c# - 静态事件与 C# 中的非静态事件相比如何?

我刚刚意识到存在静态事件-我很好奇人们如何使用它们。我想知道相对比较如何支持静态方法与实例方法。例如,静态方法基本上是一个全局函数。但我总是将事件与对象的实例联系起来,但我很难在全局层面考虑它们。这里有一些代码可以引用,如果它有助于解释:voidMain(){varc1=newC1();c1.E1+=()=>Console.WriteLine("E1");C1.E2+=()=>Console.WriteLine("E2");c1.F1();}//>+D()publicdelegatevoidD();//+>E1//+>>E2//+F()//>//>E1//>E2publicclassC

c# - 与 Contract.Requires<T> 相比抛出异常?

我想知道我是应该抛出异常还是调用Contract.Requires例如:publicstaticvoidFunction(Stringstr){if(str==null)thrownewArgumentNullException("str","Inputstringcannotbenull.");//...}对比publicstaticvoidFunction(Stringstr){Contract.Requires(str!=null,"Inputstringcannotbenull.");//...}自Contract.Requires不需要CONTRACTS_FULL符号我也可以

c# - 什么是托管模块(与程序集相比)?

.NET中的托管模块是什么?它与程序集有何不同?PE文件(例如test.dll)是托管模块还是程序集?汇编/托管模块如何对应磁盘上的物理文件? 最佳答案 Managedmodule一般理解为只包含IL代码,没有直接机器码的模块。模块位于普通PE文件中。程序集是一组1个或多个模块,其中一个指定为“头”(将查找确切的术语[1])。尽管模块本身并没有多大用处-程序集是原子单元。例如,您可以拥有一个包含2个DLL和一个EXE的多模块程序集。不过,多模块组件非常少见。DonBox的书Esssential.NET,theRichterCLRvi